/**
 * 添加类
 * @param dom 元素DOM
 * @param className 需要添加的类
 */
export function addClass(dom, className) {
  if (hasClass(dom, className)) {
    return
  }
  let newClass = dom.className.split(' ')
  newClass.push(className)
  dom.className = newClass.join(' ')
}

/**
 * 检查类是否存在
 * @param el 元素
 * @param className 类名称
 * @returns {boolean} 返回值
 */
export function hasClass(el, className) {
  let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')
  return reg.test(el.className)
}

export function getData(el, name, val) {
  const prefix = 'data-'
  name = prefix + name
  if (val) {
    return el.setAttribute(name, val)
  } else {
    return el.getAttribute(name)
  }
}

/**
 * 创建一个div style元素
 * @type {CSSStyleDeclaration}
 */
let elementStyle = document.createElement('div').style

/**
 * 判断transform名称
 * @type {*|boolean}
 */
let vendor = (() => {
  // 创建内核名称
  let transformNames = {
    webkit: 'webkitTransform',
    Moz: 'MozTransform',
    O: 'OTransform',
    ms: 'msTransform',
    standard: 'transform'
  }

  // 编辑获取是什么内核
  for (var key in transformNames) {
    if (elementStyle[transformNames[key]] !== undefined) {
      return key // 返回内核名称
    }
  }

  return false // 如果遍历失败则返回false， 多为异常浏览器
})()

/**
 * 添加样式前缀
 * @param style
 * @returns {*}
 */
export function prefixStyle(style) {
  // false 直接返回
  if (vendor === false) {
    return false
  }

  // 标准时直接返回样式
  if (vendor === 'standard') {
    return style
  }

  return vendor + style.charAt(0).toUpperCase() + style.substr(1)
}
